package com.wan.data.mysql.orm.annotion;

import com.wan.data.mysql.orm.convert.AutoConverter;
import com.wan.data.mysql.orm.convert.Converter;

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Inherited
@Documented
public @interface Column {
    /**
     * 字段名，不填默认取属性名转换小写
     */
    String name() default "";

    /**
     * 长度，不填使用属性类型转换成对应数据库类型的默认长度
     */
    long length() default -1;

    /**
     * 小数点后长度，适用于浮点数类型(float,double,decimal)
     */
    int scale() default 0;

    /**
     * 启用【不允许为空】约束
     */
    boolean notNull() default false;

    /**
     * 字段注释描述
     */
    String comment() default "";

    /**
     * 是否自增
     */
    boolean autoIncrement() default false;

    /**
     * 字段入库出库转换器
     * 默认是根据类型【自动转换】
     * 可强制指定其他或者自定义转换器
     */
    Class<? extends Converter> converter() default AutoConverter.class;


}
